import * as path from "path";
import * as fs from "fs"; 


function loadFile(filePath: string) {
    try {
        // 获取文件后缀
        const extname: string = path.extname(filePath);
        // 不是这几种格式就直接读取文件返回
        if (![".js", ".ts", ".json"].includes(extname)) {
            return fs.readFileSync(filePath);
        }
        // 读取文件内容
        const obj = require(filePath);
        // 如果是对象存在就直接返回了
        if (!obj) return obj;
        // 如果是esModule，就返回es的格式
        if (obj.__esModule) return "default" in obj ? obj.default : obj;

        return obj;
    } catch (error) {
        (error as any).message = `[core] load file: ${filePath}, error: ${(error as any).message}`;
        throw error;
    }
}

export function localLoadFile(filePath: string) {
    if (!fs.existsSync(filePath)) {
        return null;
    }

    return loadFile(filePath);
}